1. Field of the Invention
The present invention relates to devices, software applications and networks that utilize data that is sent or received over data communication or computer networks. In particular, the present invention is directed to management and use of memory in a network device to implement certain policies. The processor and methods described provide greater reliability in the use of external memory to process the data sent and received by the network device.
2. Description of Related Art
As computer performance has increased in recent years, the demands on computer networks has significantly increased; faster computer processors and higher memory capabilities need networks with high bandwidth capabilities to enable high speed transfer of significant amounts of data. The well-known Ethernet technology, which is based upon numerous IEEE Ethernet standards, is one example of computer networking technology which has been able to be modified and improved to remain a viable computing technology.
Based upon the Open Systems Interconnect (OSI) 7-layer reference model, network capabilities have grown through the development of repeaters, bridges, routers, and, switches, which operate with various types of communication media. Collectively, with respect to the present invention, all of these may be referred to as network devices. Switches, as they relate to computer networking and to Ethernet, are hardware-based devices which control the flow of datagrams, data packets or cells based upon destination address information which is available in each packet. A properly designed and implemented switch should be capable of receiving a packet and switching the packet to an appropriate output port at the maximum speed capability of the particular network.
Referring to the OSI 7-layer reference model discussed previously, the higher layers typically have more information. Various types of products are available for performing switching-related functions at various levels of the OSI model. Hubs or repeaters operate at layer 1, and essentially copy and “broadcast” incoming data to a plurality of spokes of the hub. Layer 2 switching-related devices are typically referred to as multiport bridges, and are capable of bridging two separate networks. Bridges can create a table of forwarding rules based upon which MAC (media access controller) addresses exist on which ports of the bridge, and pass packets that are destined for an address which is located on an opposite side of the bridge. Bridges typically utilize what is known as the “spanning tree” algorithm to eliminate potential data loops; a data loop is a situation wherein a packet endlessly loops in a network looking for a particular address. The spanning tree algorithm defines a protocol for preventing data loops. Layer 3 switches, sometimes referred to as routers, can forward packets based upon the destination network address. Layer 3 switches are capable of learning addresses and maintaining tables thereof which correspond to port mappings. Processing speed for layer 3 switches can be improved by utilizing specialized high performance hardware, and off loading the host CPU so that instruction decisions do not delay packet forwarding.
In addition, there has also been pressure from the implementers of the computer networks to have network devices to mediate traffic on the computer networks that are extremely flexible and low cost. One aspect of this lower cost can be the use of external memory, i.e. memory that does not natively reside within the network device. A network device may use external memory, at least in part, to temporarily store data that is received by the network device. This allows for the external memory to be switched out, if needed, without requiring revamping of the chip that makes up the network device.
The interface between the network switch and the external memory becomes more important as the throughput for the external memory increases. For example, for external memory such as 200 Mhz Double Data Rate Synchronous Dynamic Random Access Memory (DDR SDRAM), the interface and the memory controller must be able to read and write data at that frequency. In the past, the level of precision with respect to the timing control elements did not have to be as greater to accommodate slower memory.
To accomplish this, a master Delay-Locked Loop (DLL) is used to set the number of delay taps and used to set a 90 degree phase difference that is required by the memory. This is desirable because the clock edge should be centered right in the middle of the window for the memory because that is preferred. The signal from the master DLL is sent to slave DLLs that are populated in the memory channels of the network device. Thus, one command center receives the clock signal, the same clock signal used by the memory, and the proper signals are then used for all of the memory channels. The signal the master DLL sends out, after performing the proper locking, controls up to a 32-bit delay tap in the delay line.
However, as discussed above, problems can occur with the DLL functioning when the memory has a higher throughput and detection and correction must occur at higher speeds. One such problem can occur in that the phase shift must be detected to determine if it is still 90 degrees. As time goes by, the voltages and settings in the network device may shift and other changes may occur. The DLL needs to react to its working environment and automatically change its settings accordingly. One issue is how often to update the slave DLLs. If the update were to occur at every clock cycle, the delay lines would have issues when changing from tap to the next tap. If the slave DLLs are not updated and reset before the next cycle, certain glitches may be introduced. In other words, things may not momentarily be set correctly. The glitches can potentially generate extra clock edges that would be very undesirable to the function of the device.